
package modelo.bo.cmd.contato;

import java.io.IOException;
import java.sql.*;
import java.util.*;
import javax.servlet.http.*;
import modelo.bo.cmd.Acao;
import modelo.dao.impl.*;
import modelo.dao.util.ConexaoMySQL;
import modelo.dto.*;

public class PesquisaAvacandaContato extends Acao {
	private Contato contato;
	
	@Override
	public void init(HttpServletRequest request) {
		super.pagina = "/pages/contato/pesquisa-contato.jsp";
		
		this.contato = new Contato();		
		this.contato.setNome(request.getParameter("nome"));
		this.contato.setSexo(request.getParameter("sexo"));
		this.contato.getGrupo().setCodigo(Integer.parseInt(request.getParameter("idGrupo")));		
	}
	
	@Override
	public boolean executar(HttpServletRequest request, HttpServletResponse response) throws IOException {
		List<Contato> listContatos = new ArrayList<Contato>();	
		List<Contato> contatos = null;
		List<Telefone> tels = null;
		
		super.msg = String.format("Nenhum contato encontrado com o(s) parametro(s) informado(s)!");
		
		try {
			 			
//			if(!this.contato.getNome().isEmpty()) {
				Connection conn = ConexaoMySQL.getConnection();							
				
				ContatoImpl ci = new ContatoImpl(conn);
				
				contatos = ci.buscaAvancada(this.contato);
				
				if(contatos.size() >= 1) {
					
					TelefoneImpl ti = new TelefoneImpl(conn);
					
					for(Contato contato : contatos) {
						tels = ti.buscarTelefoneAndOperadora(contato);
						//tels = ti.pesquisaAvancada(contato, this.operadora);
						
						contato.setTelefones(tels);
						
						listContatos.add(contato);
					}
					
					request.setAttribute("contatos", listContatos);
				}
				else{
					request.setAttribute("msg", super.msg);
				}
				
//			}
			/*
			else {
				super.msg = "Preencha o campo contato.";
				request.setAttribute("msg", super.msg);
			}
			*/
		}
		catch(SQLException e) {
			e.printStackTrace();
			super.msg = "Erro ao tentar pesquisar contato - ";
			request.setAttribute("msg", super.msg + e.getMessage());
		}		
		
		return super.efetuou;
	}	

	@Override
	public String retornaPagina() {
		return super.pagina;
	}

}
